package com.ruoyi.system.dto;

import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 验收单模板创建DTO
 * 用于创建验收单模板及其项
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
public class AcceptanceChecklistTemplateCreateDTO {

    /**
     * 项目ID
     * 必填
     */
    @NotNull(message = "项目ID不能为空")
    private Long projectId;

    /**
     * 施工阶段ID
     * 必填
     */
    @NotNull(message = "施工阶段ID不能为空")
    private Long stageId;

    /**
     * 验收单模板名称
     * 必填
     */
    @NotBlank(message = "验收单模板名称不能为空")
    private String templateName;

    /**
     * 验收单模板描述
     * 可选
     */
    private String templateDesc;

    /**
     * 验收单模板项列表
     * 必填，至少包含一个项
     */
    @Valid
    @NotNull(message = "验收单模板项不能为空")
    private List<TemplateItemDTO> items;

    /**
     * 验收单模板项DTO
     */
    @Data
    public static class TemplateItemDTO {

        /**
         * 序号
         * 必填
         */
        @NotNull(message = "序号不能为空")
        private Integer seqNo;

        /**
         * 验收项名称
         * 必填
         */
        @NotBlank(message = "验收项名称不能为空")
        private String itemName;

        /**
         * 验收标准描述
         * 必填
         */
        @NotBlank(message = "验收标准描述不能为空")
        private String acceptanceStandard;

        /**
         * 验收类型
         * 必填
         */
        @NotBlank(message = "验收类型不能为空")
        private String acceptanceType;

        /**
         * 是否必填
         * 必填
         */
        @NotNull(message = "是否必填不能为空")
        private Integer isRequired;

        /**
         * 排序号
         * 可选
         */
        private Integer sortOrder;
    }
}

